iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
自我挑戰組

30天Swift純Code之旅 - 鬧鐘篇系列 第 5

Swift純Code之旅 Day5. 「編輯與新增 - Navigation Bar」

  • 分享至 

  • xImage
  •  

/images/emoticon/emoticon33.gif
大家應該還記得昨天我們有說到今天會聊聊TableView Cell的內容,事不宜遲,
馬上來聊聊Navigation Bar吧(?

注意!!今天要講的不是TableView Cell哦,已經將主題改為Navigation Bar!

https://ithelp.ithome.com.tw/upload/images/20210915/20108999CT3pEbhU9X.jpg

大家可以發現鬧鐘的新增與編輯都是靠最上面這兩顆按鈕來完成的,這兩顆按鈕其實有專屬的名稱分別是:

  • navigationItem.rightBarButtonItem
  • navigationItem.leftBarButtonItem

應該光看名稱就知道誰是誰了吧/images/emoticon/emoticon37.gif

那馬上使用Code來製作他們吧!

func setNavigation() {
        //Left Button
        let editButton = UIBarButtonItem(title: "編輯",
                                         style: .plain,
                                         target: self,
                                         action: #selector(editAlarm))
        editButton.tintColor = .orange
        self.navigationItem.leftBarButtonItem = editButton

        //Right Button
        let addButton = UIBarButtonItem(image: UIImage(systemName: "plus"),
                                        style: .plain,
                                        target: self,
                                        action: #selector(addAlarm))
        addButton.tintColor = .orange
        self.navigationItem.rightBarButtonItem = addButton
    }

這邊來稍微說明一下Code的內容:

由於Navigation Bar的Button只接受UIBarButtonItem型態,因此這邊才會將Button宣告為UIBarButtonItem型態。

首先宣告一個名稱為editButton的變數,其型態為UIBarButtonItem
UIBarButtonItem所使用的四個變數說明如下:

  • title(該按鈕顯示的名稱)
  • style(按鈕點擊效果)
  • target(目標對象,基本上就是自己)
  • action(按鈕按下後會執行的Function)

設定完後再將按鈕的顏色更改為橘色,之後再 assign 到 Navigation Bar Button 裡面。

右邊的按鈕基本上也是一樣的設定方式,唯一不同的是:右邊的按鈕是一個 + 符號的圖案
因此這邊使用 UIImage(systemNamed: "plus") 來實作一個圖案為 + 的按鈕。

UIImage(systemNamed: "...")是去Xcode的內建圖庫依照名稱去抓取相對應的圖片,
更多圖片名稱可以去載SF Symbol了解一下

到這邊按鈕基本上已經設定完成了,但是Xcode應該會報錯,因為我們還沒實作這兩顆按鈕按下的Function,
因此這邊先新增兩個沒有內容的Function:

@objc func editAlarm() {

    }

@objc func addAlarm() {

    }

OK,這樣應該就沒問題了,記得把設定 Navigation 的 Function 加進去 viewDidLoad()中哦!

override func viewDidLoad() {
        super.viewDidLoad()
        setViews()
        setLayouts()
        // Set Navigation
        setNavigation()
    }

執行專案後應該會呈現出下面這樣:
https://ithelp.ithome.com.tw/upload/images/20210915/20108999gIBus7A9Sa.png

明天應該會來說說這兩顆按鈕的動作,明天見囉/images/emoticon/emoticon08.gif


上一篇
Swift純Code之旅 Day4.「畫面分身術 - TableView & AutoLayout」
下一篇
Swift純Code之旅 Day6. 「新增鬧鐘的第一步 - 新增新增鬧鐘頁面」
系列文
30天Swift純Code之旅 - 鬧鐘篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言